﻿#ifndef NSA3000NPROL_H
#define NSA3000NPROL_H

#include <QtCore/qglobal.h>
#include <QString>

#include "../../../comm/sys_h/DATATYPE.h"

#if defined(NSA3000NPROL_LIBRARY)
#  define NSA3000NPROLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define NSA3000NPROLSHARED_EXPORT Q_DECL_IMPORT
#endif


// 1,Ia,F,A,0.0,1
#define STRING_LENGTH_PRO 64

 //��ֵ��Ϣ�ṹ
typedef struct _Setvalue_data_Info
{
	XCHAR         sSetvalueName[STRING_LENGTH_PRO];			//��ֵ����
	XFLOAT        setvalue;                                 //����ֵ
	XCHAR         sUnit[STRING_LENGTH_PRO];					//��λ
	       
	_Setvalue_data_Info()
	{
		setvalue =0;
		memset(sSetvalueName,0,STRING_LENGTH_PRO);
		memset(sUnit,0,STRING_LENGTH_PRO);
	}
	~_Setvalue_data_Info()
	{
	}
}Setvalue_data_Info;

//�м����ݽṹ��һ���������ڣ�һ���ṹ
typedef struct _Pro_data_Info
{
	XUINT         order_no;     //�������
	XUINT         time_offset;  //ʱ��ƫ��
	XFLOAT        *data;         
	_Pro_data_Info()
	{
		order_no =0;
		time_offset =0;
		data=NULL;
	}
	~_Pro_data_Info()
	{
		if (data)
		{
			delete [] data;data = NULL;
		}
	}
}Pro_data_Info;

//ͨ����Ϣ
typedef struct _Pro_Channel_Info
{
	XCHAR         sChannelName[STRING_LENGTH_PRO];			//ͨ������
	XUSHORT       DataType;                                 //��������
	XCHAR         sUnit[STRING_LENGTH_PRO];					//��λ
	XFLOAT        Channelratio;                             //ͨ������
	XBOOL         bShow;                                    //�Ƿ���ʾ

	_Pro_Channel_Info()
	{
		DataType =0 ;
		Channelratio = 0;
		bShow =0;
		memset(sChannelName,0,STRING_LENGTH_PRO);
		memset(sUnit,0,STRING_LENGTH_PRO);
	}
	~_Pro_Channel_Info()
	{
	}
}Pro_Channel_Info;

//�ļ�������Ϣ
typedef struct _Pro_all_Info
{
	XUINT         Channel_num;
	XUINT         A_Num;                                    //ģ��������
	XUINT         D_Num; 

	XUINT         cy_record_num;//�����㶳�����
	Pro_Channel_Info *pchannelinfo;//Channel_num ��

	_Pro_all_Info()
	{
		Channel_num = 0;
		A_Num =0;
		D_Num=0;
		cy_record_num=0;
		pchannelinfo = NULL;
	}
	~_Pro_all_Info()
	{
		if (pchannelinfo)
		{
			delete [] pchannelinfo;
			pchannelinfo=NULL;
		}
	}
}Pro_all_Info;

class NSA3000NPROLSHARED_EXPORT NSA3000NPROL 
{
public:
    NSA3000NPROL();

	/*
	��ʼ������
	���룺	sfileDirPath,�м��ļ�·��
	�����	
	*/
    XINT Init_Pro_dll(QString  sfileDirPath);


	XINT Free_Pro_dll();
	
	/*
	У��������Ƿ�Ϸ�����
	���룺	name,���������
	�����	�������Ч����true����Ч����false
	*/
	XBOOL check_name_valid(QString name);


	/*
	�����������ţ���ȡʱ��
	���룺	index,���
	�����	���ʱ�䣬���������ʼ��ʱ�����󷵻�-1����
	*/
	XINT get_time_by_cyindex(XINT index);

	/*
	������������ƺ���ţ���ȡ����ֵ
	���룺	name,��������ƣ�
	        index,���                         
	�����	����ֵ��0��1��-2�����ƷǷ���-3�����Խ�磩��
	*/
	XINT get_value(QString name, XINT index);

	/*
	������������ƣ���ȡ��ֵ��ѹ��״̬
	���룺	name,��������ƣ�
                        
	�����	ret_set�����󷵻�-1��
	*/
	XINT get_set(QString name, Setvalue_data_Info &ret_set);

	/*
	ʱ��������ܸ���
	���룺
	�����	ʱ��������ܸ���
	*/
	XINT get_total_cynum();



//���º�����Ԥ���������Ҫʵ��

	/*
	ȡʱ��ƫ��
	���룺 �������ţ�����
	����� ʱ��ƫ��,-1�������Ƿ���-2������Խ��
	*/
	XINT get_time_offset(int index_pre,int index_after);


protected:
	 XINT   checkNum(QString sline);//ͨ��������ģ���������Ϳ���������
	 XINT   Test_printf();


	 XUINT  m_setvalue_num;
};

#endif // NSA3000NPROL_H
